"""自定义过滤器函数/装饰器等"""
import functools

from flask import current_app, jsonify
from flask import g
from flask import session

from app.utils.response_code import RET


def do_index_class(index):
    """自定义过滤器,过滤点击排行html的class,其实就是给前三名来点特殊标记"""
    if index == 1:
        return "first"
    elif index == 2:
        return "second"
    elif index == 3:
        return "third"
    else:
        return ""


def user_login_data(func):
    """获取当前登录用户信息的装饰器"""
    """
    functools.wraps装饰器: 改变被装饰的函数的一些特性(如函数名称),例如在url_for(func)时,若无此装饰器则返回wrapper,若有则返回func
    """
    @functools.wraps(func)
    def wrapper(*arg,**kwargs):
        """"""
        # 获取当前登录用户id
        user_id = session.get("user_id")
        # 通过id获取用户信息
        user = None
        if user_id:
            # 这里需要延迟导入,不然将产生循环导入db的问题
            from app.models import User
            try:
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=RET.DBERR, errmsg="查询用户信息异常")
        #将用户对象保存到g对象中
        g.user = user

        return func(*arg, **kwargs)

    return wrapper
